/*
 * d_linklist.h
 *
 *  Created on: 2017年10月18日
 *      Author: simon
 */

#ifndef D_LINKLIST_H_
#define D_LINKLIST_H_

#include "s_linklist.h"	//引用typedef int type;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


typedef struct d_node {
	type data;
	struct d_node *prev;
	struct d_node *next;
}D_NODE,*D_PNODE;
typedef struct d_head {
	D_PNODE tail;		//指向尾节点
	D_PNODE head;		//指向头结点
	int length;			//双向链表的长度
}D_ROOT,*D_PROOT;

//创建一个节点并且赋值为data
D_PNODE d_makenode_linklist(type data);
//初始化双向链表
D_PROOT d_init_linklist(void);
//改变根节点中记录链表数组大小的标记
void d_resizemark_linklist(D_PROOT d_root,int length);
//遍历链表并且打印
void d_printfall_linklist(D_PROOT d_root);
//释放node所指的节点
void d_freenode_linklist(D_PNODE node);
//摧毁一个双向链表
void d_destory_linklist(D_PROOT d_root);
//往双向链表头部添加节点
void d_addhead_linklist(D_PROOT d_root,D_PNODE node);
#endif /* D_LINKLIST_H_ */
